package edu.umd.ion.wavemeter.service;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Asynchronous definitions of the server interface.
 * @author monroe-lab
 * 
 */
public interface WavemeterServiceAsync
{
	void pollWavemeter(WavemeterDataMask mask,  AsyncCallback<WavemeterData> callback);
	void setActive( int Channel, boolean Active,  AsyncCallback<Void> callback );
	void setExposureMode(int channel, boolean mode,  AsyncCallback<Void> callback);
	void setExposure(int Channel, int array, int Value,  AsyncCallback<Void> callback);
	void setAverage(int Channel, int num,  AsyncCallback<Void> callback);
	void setMeasurement(boolean start,  AsyncCallback<Void> callback);
	void setWideMode(boolean wide,  AsyncCallback<Void> callback);
	void setPulseMode(boolean pulsed,  AsyncCallback<Void> callback);
	void setFastMode(boolean fast,  AsyncCallback<Void> callback);
	void setRegulationEnable(boolean regulate, AsyncCallback<Void> callback);
	void setSwitcherMode(boolean switcher,  AsyncCallback<Void> callback);
	void setPID( PIDSettings settings, AsyncCallback<PIDSettings> callback );
	void getPID( int Channel, AsyncCallback<PIDSettings> callback );
	void getPIDSettingsInUse(AsyncCallback<PIDSettingsInUse> callback );
	void setPIDCourse( int Channel, String Course, AsyncCallback<String> callback );
	void shutdown( AsyncCallback<Void> callback );
	void clearPIDHistory(int channel, AsyncCallback<Void> callback);
	void setSettings(String username, String settings, AsyncCallback<Void> callback);
	void getSettings(String username, AsyncCallback<String> callback);
	void setInterlock(InterlockSettings Interlock, AsyncCallback<Void> callback);
	void getInterlock(int Channel, AsyncCallback<InterlockSettings> callback);
	void setCalibrationSettings(int Channel, CalibrationSettings settings, AsyncCallback<Void> callback);
	void getCalibrationSettings(int Channel, AsyncCallback<CalibrationSettings> callback);
	void getUsernames(AsyncCallback<String[]> callback);
	void calibrate( int unit, double value, int channel, AsyncCallback<CalibrationResult> callback);
	void getPIDCourseSuggestions( int Channel, AsyncCallback<String[]> callback );
	void calibrationHistory(AsyncCallback<CalibrationResult[]> callback);
	void channelRouting(AsyncCallback<ChannelRoutingInfo[]> callback);
	void addChannelName(int Channel, String Name, AsyncCallback<Void> callback );
	void setExposureParameters(DynamicExposureParameters ExposureParams, AsyncCallback<DynamicExposureParameters> callback );
	void getExposureParameters(AsyncCallback<DynamicExposureParameters> callback);
	void channelInfo(AsyncCallback<ChannelInfo[]> callback );
	void isLocalClient(AsyncCallback<Boolean> callback );
	void getNumberOfChannels(AsyncCallback<Integer> callback );
	void getNumberOfPIDChannels(AsyncCallback<Integer> callback );
	void raiseChannelEvent(ChannelEvent E, AsyncCallback<Void> callback );

}



